﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CAGFIP.Jogo
{
    public enum DificuldadeCode
    {
        Facil = 0,
        Medio = 1,
        Dificil = 2,
    }

    public class DificuldadeCollection
    {
        #region Singleton

        private static DificuldadeCollection instance;

        private DificuldadeCollection() { }

        public static DificuldadeCollection Instance
        {
            get
            {
                if (instance == null)
                    instance = new DificuldadeCollection();
                return instance;
            }
        }

        #endregion
        
        #region Fields

        private Dificuldade facil;
        private Dificuldade medio;
        private Dificuldade dificil;

        #endregion

        #region Properties

        private Dificuldade Facil
        {
            get { return this.facil ?? (this.facil = new DificuldadeFacil()); }
        }
        private Dificuldade Medio
        {
            get { return this.medio ?? (this.medio = new DificuldadeMedio()); }
        }
        private Dificuldade Dificil
        {
            get { return this.dificil ?? (this.dificil = new DificuldadeDificil()); }
        }

        public Dificuldade this[DificuldadeCode code]
        {
            get
            {
                switch (code)
                {
                    case DificuldadeCode.Facil:
                        return Facil;
                    case DificuldadeCode.Medio:
                        return Medio;
                    case DificuldadeCode.Dificil:
                        return Dificil;
                    default:
                        throw new NotImplementedException();
                }
            }
        }

        #endregion
    }
}
